package org.eclipselabs.e4.tapiji.resource.internal;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.Path;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.swt.graphics.Image;
import org.eclipselabs.e4.tapiji.resource.ITapijiResourceProvider;
import org.osgi.framework.Bundle;
import org.osgi.framework.FrameworkUtil;
public class ResourceLoader implements ITapijiResourceProvider {
private static final Map<String, Image> IMAGES = new HashMap<String, Image>();
@Override
public Image loadImage(final String path) {
Image img = IMAGES.get(path);
if (null == img) {
final Bundle bundle = FrameworkUtil.getBundle(ResourceLoader.class);
final URL url = FileLocator.find(bundle, new Path(path), null);
final ImageDescriptor imageDescr = ImageDescriptor.createFromURL(url);
img = imageDescr.createImage();
IMAGES.put(path, img);
}
return img;
}
@Override
public void dispose() {
for (Image image : IMAGES.values()) {
image.dispose();
}
}
}